/*******************************************************************

   ModuleEntry.c

   It must contain at least all what is here.

   I would suggest to you not to write much more than the needed
   calls to your functions here. So you may forget later a little
   bit, that you are writing a library...

*********************************************************************/

// we are doing all other include stuff there
#include "includes/Project.h"

// I use heavily defines, so this must not so much reworked each time,
// I change only the Project.h...

ModuleInfo module_info =
{
    MODULE_VER_NUMBER,
    MODULE_NAME,
    MODULE_CATALOG,
    MODULE_FLAGS,
    MODULE_FUNC_COUNT,

    { FUNC0_ID, COMMAND_0, FUNC0_DESCRIPTION, FUNC0_FLAGS, FUNC0_TEMPLATE }
};

// now you must modify some lines, if your module should have more than
// one command buildin...
// For example we make here at all 3 commands. The 3. command itself is a
// hidden command (is not shown in the commandlist...)

#if MODULE_FUNC_COUNT-1

ModuleFunction module_func[MODULE_FUNC_COUNT-1] =
{ 
    { FUNC1_ID, COMMAND_1, FUNC1_DESCRIPTION, FUNC1_FLAGS, FUNC1_TEMPLATE },
    { FUNC2_ID, COMMAND_2, FUNC2_DESCRIPTION, FUNC2_FLAGS, FUNC2_TEMPLATE }
};

#endif


// If you are a really nice programmer, you should provide the version
// string with some extra \0 's...

static char version[] = "\0$VER: " VERSION_STRING " " __AMIGADATE__ "\0";

/********************************************************************/
// Now we are ready to enter our program code...

int __asm __saveds L_Module_Entry( register __a0 char *args,              
                                   register __a1 struct Screen *screen,   
                                   register __a2 IPCData *ipc,
                                   register __a3 IPCData *main_ipc,
                                   register __d0 ULONG mod_id,
                                   register __d1 EXT_FUNC(func_callback) )
{               
    switch( mod_id )
      {
          case FUNC0_ID :  ExampleRequest( args, screen, ipc );
                           break;

          case FUNC1_ID :  OwnWindow( args, screen );
                           break;

          case FUNC2_ID :  HiddenCommand( args, ipc, main_ipc );
                           break;

      }

    return 1;
}